#pragma once

#include <iostream>
#include <string>

namespace icesp
{
#ifdef DEBUGGING_ENABLED
#define DEBUG(x) do { \
    std::cerr << x << std::endl; \
} while (0)

#define DEBUG_PROC(x) do { \
    std::cerr << x; \
} while(0)

#define DEBUG_PROC_DONE(x) do { \
    std::cerr << #x << "done." << std::endl; \
} while(0)

#else
#define DEBUG(x)
#define DEBUG_PROC(x)
#define DEBUG_PROC_DONE(x)
#endif


std::string const color_rst{"\e[0m"};
std::string const color_act{"\e[1;32m"};
std::string const color_arg{"\e[1;35m"};

#define PRINT(x) do { \
    std::cout << color_act << x << color_rst; \
} while(0)

#define PRINT2(x, y) do { \
    std::cout << color_act << x << color_arg << y << color_rst; \
} while(0)

#define PRINT3(x, y, z) do { \
    std::cout << color_act << x << color_arg << y << color_rst << z; \
} while(0)
}

